\section{System Functions}

  \subsection{Mandatory functionalities}
We expect than the ray tracing engine should be able to render basic scene, composed by sphere, cube, cylinder, plan. The will be only light, supposed to be placed at the infinite. Each object should have a color.

So, the ray tracing engine should render a single image with on input scene description xml file.

The ray tracing engine muse let the user adjust :
\begin{itemize}
  \item list of objects (sphere, cube, cylinder)
  \item parameters of these objects (position, size, rotation, color)
  \item a phong coefficient for each object
  \item a specular and diffuse reflexion for each object
  \item give the color of a unique ambient light
  \item give the position and direction of the eye
\end{itemize}

The parser should show errors in incorrect scene xml files.

  \subsection{Optional functionalities}
As optional functional, we have a lot of options.
\begin{itemize}
  \item Adding new objects : torus, more generic surface of revolution...
  \item Allowing more than one light not necessarily placed at the infinite.
  \item Adding textures to objects
  \item multi-threaded ray tracing (and eventually distrubuted among a set of machine)
  \item adding a GUI
  \item provide live view generation of the image
\end{itemize}

